From 6bf9a1e14cbab0f4da9d73bb606bfc8117025989 Mon Sep 17 00:00:00 2001 From: "kaf24@scramble.cl.cam.ac.uk" Date: Wed, 23 Jun 2004 14:39:39 +0000 Subject: [PATCH] bitkeeper revision 1.1004 (40d9962b6c-Z9R9FquPba7TS8wG_1w) Cleanups. --- extras/mini-os/h/hypervisor.h | 40 +++++++----- extras/mini-os/kernel.c | 27 ++++---- extras/mini-os/lib/printf.c | 6 +- .../arch/xen/drivers/blkif/backend/common.h | 2 +- .../arch/xen/drivers/netif/backend/common.h | 3 +- .../xen/drivers/netif/backend/interface.c | 55 ++-------------- xen/arch/x86/entry.S | 17 ++--- xen/drivers/char/console.c | 63 ------------------- xen/include/hypervisor-ifs/hypervisor-if.h | 39 ++++++------ xen/include/xen/sched.h | 17 +++-- 10 files changed, 82 insertions(+), 187 deletions(-) diff --git a/extras/mini-os/h/hypervisor.h b/extras/mini-os/h/hypervisor.h index e44c6b3573..6009671a4d 100644 --- a/extras/mini-os/h/hypervisor.h +++ b/extras/mini-os/h/hypervisor.h @@ -61,18 +61,6 @@ static __inline__ int HYPERVISOR_mmu_update(mmu_update_t *req, return ret; } -static __inline__ int HYPERVISOR_console_write(const char *str, int count) -{ - int ret; - __asm__ __volatile__ ( - TRAP_INSTR - : "=a" (ret) : "0" (__HYPERVISOR_console_write), - "b" (str), "c" (count) : "memory" ); - - - return ret; -} - static __inline__ int HYPERVISOR_set_gdt(unsigned long *frame_list, int entries) { int ret; @@ -142,7 +130,7 @@ static __inline__ int HYPERVISOR_block(void) return ret; } -static inline int HYPERVISOR_shutdown(void) +static __inline__ int HYPERVISOR_shutdown(void) { int ret; __asm__ __volatile__ ( @@ -154,7 +142,7 @@ static inline int HYPERVISOR_shutdown(void) return ret; } -static inline int HYPERVISOR_reboot(void) +static __inline__ int HYPERVISOR_reboot(void) { int ret; __asm__ __volatile__ ( @@ -166,7 +154,7 @@ static inline int HYPERVISOR_reboot(void) return ret; } -static inline int HYPERVISOR_suspend(unsigned long srec) +static __inline__ int HYPERVISOR_suspend(unsigned long srec) { int ret; /* NB. On suspend, control software expects a suspend record in %esi. */ @@ -280,4 +268,26 @@ static __inline__ int HYPERVISOR_update_va_mapping( return ret; } +static __inline__ int HYPERVISOR_xen_version(int cmd) +{ + int ret; + __asm__ __volatile__ ( + TRAP_INSTR + : "=a" (ret) : "0" (__HYPERVISOR_xen_version), + "b" (cmd) : "memory" ); + + return ret; +} + +static __inline__ int HYPERVISOR_console_io(int cmd, int count, char *str) +{ + int ret; + __asm__ __volatile__ ( + TRAP_INSTR + : "=a" (ret) : "0" (__HYPERVISOR_console_io), + "b" (cmd), "c" (count), "d" (str) : "memory" ); + + return ret; +} + #endif /* __HYPERVISOR_H__ */ diff --git a/extras/mini-os/kernel.c b/extras/mini-os/kernel.c index f1d46fbf7d..a9f423c192 100644 --- a/extras/mini-os/kernel.c +++ b/extras/mini-os/kernel.c @@ -97,22 +97,15 @@ void start_kernel(start_info_t *si) /* print out some useful information */ printk("Xen Minimal OS!\n"); - printk("start_info: %p\n", si); + printk("start_info: %p\n", si); printk(" nr_pages: %lu", si->nr_pages); printk(" shared_inf: %08lx\n", si->shared_info); - printk(" pt_base: %p", (void *)si->pt_base); + printk(" pt_base: %p", (void *)si->pt_base); printk(" mod_start: 0x%lx\n", si->mod_start); - printk(" mod_len: %lu\n", si->mod_len); -#if 0 /* XXX Change to use NETOP_GET_VIF_INFO and BLOCK_IO_OP_RING_ADDRESS */ - printk(" net_rings: "); - for (i = 0; i < MAX_DOMAIN_VIFS; i++) { - printk(" %lx", si->net_rings[i]); - }; printk("\n"); - printk(" blk_ring: 0x%lx\n", si->blk_ring); - printk(" dom_id: %ld\n", si->dom_id); -#endif - printk(" flags: 0x%lx\n", si->flags); - printk(" cmd_line: %s\n", si->cmd_line ? (const char *)si->cmd_line : "NULL"); + printk(" mod_len: %lu\n", si->mod_len); + printk(" flags: 0x%x\n", (unsigned int)si->flags); + printk(" cmd_line: %s\n", + si->cmd_line ? (const char *)si->cmd_line : "NULL"); /* @@ -126,7 +119,12 @@ void start_kernel(start_info_t *si) /* set up events */ init_events(); - /* install some handlers */ + /* + * These need to be replaced with event-channel/control-interface + * equivalents. + */ +#if 0 + /* Install some handlers. */ add_ev_action(EV_DIE, &exit_handler); enable_ev_action(EV_DIE); enable_hypervisor_event(EV_DIE); @@ -134,6 +132,7 @@ void start_kernel(start_info_t *si) add_ev_action(EV_DEBUG, &debug_handler); enable_ev_action(EV_DEBUG); enable_hypervisor_event(EV_DEBUG); +#endif /* init time and timers */ init_time(); diff --git a/extras/mini-os/lib/printf.c b/extras/mini-os/lib/printf.c index 698a089c18..f6232c4044 100644 --- a/extras/mini-os/lib/printf.c +++ b/extras/mini-os/lib/printf.c @@ -84,7 +84,8 @@ printf(const char *fmt, ...) retval = kvprintf(fmt, printk_buf, 10, ap); printk_buf[retval] = '\0'; va_end(ap); - (void)HYPERVISOR_console_write(printk_buf, strlen(printk_buf)); + (void)HYPERVISOR_console_io(CONSOLEIO_write, strlen(printk_buf), + printk_buf); return retval; } @@ -95,7 +96,8 @@ vprintf(const char *fmt, va_list ap) static char printk_buf[1024]; retval = kvprintf(fmt, printk_buf, 10, ap); printk_buf[retval] = '\0'; - (void)HYPERVISOR_console_write(printk_buf, strlen(printk_buf)); + (void)HYPERVISOR_console_io(CONSOLEIO_write, strlen(printk_buf), + printk_buf); return retval; } diff --git a/linux-2.4.26-xen-sparse/arch/xen/drivers/blkif/backend/common.h b/linux-2.4.26-xen-sparse/arch/xen/drivers/blkif/backend/common.h index 6e10732e04..daf09a76f9 100644 --- a/linux-2.4.26-xen-sparse/arch/xen/drivers/blkif/backend/common.h +++ b/linux-2.4.26-xen-sparse/arch/xen/drivers/blkif/backend/common.h @@ -15,7 +15,7 @@ #include #include "../blkif.h" -#ifndef NDEBUG +#if 0 #define ASSERT(_p) \ if ( !(_p) ) { printk("Assertion '%s' failed, line %d, file %s", #_p , \ __LINE__, __FILE__); *(int*)0=0; } diff --git a/linux-2.4.26-xen-sparse/arch/xen/drivers/netif/backend/common.h b/linux-2.4.26-xen-sparse/arch/xen/drivers/netif/backend/common.h index 88881cdf66..f3eff0d81b 100644 --- a/linux-2.4.26-xen-sparse/arch/xen/drivers/netif/backend/common.h +++ b/linux-2.4.26-xen-sparse/arch/xen/drivers/netif/backend/common.h @@ -16,9 +16,8 @@ #include #include #include "../netif.h" -#include "../../../../../net/bridge/br_private.h" -#ifndef NDEBUG +#if 0 #define ASSERT(_p) \ if ( !(_p) ) { printk("Assertion '%s' failed, line %d, file %s", #_p , \ __LINE__, __FILE__); *(int*)0=0; } diff --git a/linux-2.4.26-xen-sparse/arch/xen/drivers/netif/backend/interface.c b/linux-2.4.26-xen-sparse/arch/xen/drivers/netif/backend/interface.c index cc20e780ce..2c4b74e1ea 100644 --- a/linux-2.4.26-xen-sparse/arch/xen/drivers/netif/backend/interface.c +++ b/linux-2.4.26-xen-sparse/arch/xen/drivers/netif/backend/interface.c @@ -13,10 +13,6 @@ #define NETIF_HASH(_d,_h) (((int)(_d)^(int)(_h))&(NETIF_HASHSZ-1)) static netif_t *netif_hash[NETIF_HASHSZ]; -#ifdef XEN_BRIDGE -static struct net_device *bridge_dev; -static struct net_bridge *bridge_br; -#endif netif_t *netif_find_by_handle(domid_t domid, unsigned int handle) { @@ -40,9 +36,6 @@ void __netif_disconnect_complete(netif_t *netif) unbind_evtchn_from_irq(netif->evtchn); vfree(netif->tx); /* Frees netif->rx as well. */ rtnl_lock(); -#ifdef XEN_BRIDGE - (void)br_del_if(bridge_br, netif->dev); -#endif (void)dev_close(netif->dev); rtnl_unlock(); @@ -125,12 +118,13 @@ void netif_create(netif_be_create_t *create) /* Disable queuing. */ dev->tx_queue_len = 0; - /* XXX In bridge mode we should force a different MAC from remote end. */ + /* Force a different MAC from remote end. */ dev->dev_addr[2] ^= 1; - err = register_netdev(dev); - if (err) { - DPRINTK("Could not register new net device %s: err=%d\n", dev->name, err); + if ( (err = register_netdev(dev)) != 0 ) + { + DPRINTK("Could not register new net device %s: err=%d\n", + dev->name, err); create->status = NETIF_BE_STATUS_OUT_OF_MEMORY; kfree(dev); return; @@ -242,25 +236,7 @@ void netif_connect(netif_be_connect_t *connect) netif_get(netif); rtnl_lock(); - (void)dev_open(netif->dev); -#ifdef XEN_BRIDGE - (void)br_add_if(bridge_br, netif->dev); - - /* - * The default config is a very simple binding to eth0. - * If eth0 is being used as an IP interface by this OS then someone - * must add eth0's IP address to nbe-br, and change the routing table - * to refer to nbe-br instead of eth0. - */ - (void)dev_open(bridge_dev); - if ( (eth0_dev = __dev_get_by_name("eth0")) != NULL ) - { - (void)dev_open(eth0_dev); - (void)br_add_if(bridge_br, eth0_dev); - } -#endif - rtnl_unlock(); (void)request_irq(netif->irq, netif_be_int, 0, netif->dev->name, netif); @@ -301,25 +277,4 @@ int netif_disconnect(netif_be_disconnect_t *disconnect, u8 rsp_id) void netif_interface_init(void) { memset(netif_hash, 0, sizeof(netif_hash)); -#ifdef XEN_BRIDGE - if ( br_add_bridge("nbe-br") != 0 ) - BUG(); - bridge_dev = __dev_get_by_name("nbe-br"); - bridge_br = (struct net_bridge *)bridge_dev->priv; - bridge_br->bridge_hello_time = bridge_br->hello_time = 0; - bridge_br->bridge_forward_delay = bridge_br->forward_delay = 0; - bridge_br->stp_enabled = 0; -#endif } - -#ifndef CONFIG_BRIDGE -#error Must configure Ethernet bridging in Network Options -#endif -#ifndef XEN_BRIDGE -EXPORT_SYMBOL(br_add_bridge); -EXPORT_SYMBOL(br_del_bridge); -EXPORT_SYMBOL(br_add_if); -EXPORT_SYMBOL(br_del_if); -EXPORT_SYMBOL(br_get_bridge_ifindices); -EXPORT_SYMBOL(br_get_port_ifindices); -#endif diff --git a/xen/arch/x86/entry.S b/xen/arch/x86/entry.S index 155f93fd9f..c180240197 100644 --- a/xen/arch/x86/entry.S +++ b/xen/arch/x86/entry.S @@ -697,30 +697,25 @@ nmi_io_err: ENTRY(hypervisor_call_table) .long SYMBOL_NAME(do_set_trap_table) /* 0 */ .long SYMBOL_NAME(do_mmu_update) - .long SYMBOL_NAME(do_console_write) .long SYMBOL_NAME(do_set_gdt) .long SYMBOL_NAME(do_stack_switch) - .long SYMBOL_NAME(do_set_callbacks) /* 5 */ - .long SYMBOL_NAME(do_ni_syscall) # do_net_io_op - .long SYMBOL_NAME(do_fpu_taskswitch) + .long SYMBOL_NAME(do_set_callbacks) + .long SYMBOL_NAME(do_fpu_taskswitch) /* 5 */ .long SYMBOL_NAME(do_sched_op) .long SYMBOL_NAME(do_dom0_op) - .long SYMBOL_NAME(do_ni_syscall) /* 10 */ # do_network_op - .long SYMBOL_NAME(do_ni_syscall) # do_block_io_op .long SYMBOL_NAME(do_set_debugreg) .long SYMBOL_NAME(do_get_debugreg) - .long SYMBOL_NAME(do_update_descriptor) - .long SYMBOL_NAME(do_set_fast_trap) /* 15 */ + .long SYMBOL_NAME(do_update_descriptor) /* 10 */ + .long SYMBOL_NAME(do_set_fast_trap) .long SYMBOL_NAME(do_dom_mem_op) .long SYMBOL_NAME(do_multicall) - .long SYMBOL_NAME(do_ni_syscall) # do_kbd_op .long SYMBOL_NAME(do_update_va_mapping) - .long SYMBOL_NAME(do_set_timer_op) /* 20 */ + .long SYMBOL_NAME(do_set_timer_op) /* 15 */ .long SYMBOL_NAME(do_event_channel_op) .long SYMBOL_NAME(do_xen_version) .long SYMBOL_NAME(do_console_io) .long SYMBOL_NAME(do_physdev_op) - .long SYMBOL_NAME(do_update_va_mapping_otherdomain) /* 25 */ + .long SYMBOL_NAME(do_update_va_mapping_otherdomain) /* 20 */ .rept NR_syscalls-((.-hypervisor_call_table)/4) .long SYMBOL_NAME(do_ni_syscall) .endr diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index f675d03049..33b9a37a52 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -393,69 +393,6 @@ void set_printk_prefix(const char *prefix) strcpy(printk_prefix, prefix); } -/* - * This hypercall is deprecated. Only permit its use in debug environments. - */ -long do_console_write(char *str, unsigned int count) -{ -#ifndef NDEBUG -#define SIZEOF_BUF 256 - unsigned char safe_str[SIZEOF_BUF+1]; - unsigned char single_line[SIZEOF_BUF+2]; - unsigned char line_header[30]; - unsigned char *p; - unsigned char c; - unsigned long flags; - int j; - - if ( count == 0 ) - return 0; - - if ( count > SIZEOF_BUF ) - count = SIZEOF_BUF; - - if ( copy_from_user(safe_str, str, count) ) - return -EFAULT; - safe_str[count] = '\0'; - - sprintf(line_header, "DOM%u: ", current->domain); - - p = safe_str; - while ( *p != '\0' ) - { - j = 0; - - while ( (c = *p++) != '\0' ) - { - if ( c == '\n' ) - break; - if ( (c < 32) || (c > 126) ) - continue; - single_line[j++] = c; - } - - single_line[j++] = '\n'; - single_line[j++] = '\0'; - - spin_lock_irqsave(&console_lock, flags); - __putstr(line_header); - __putstr(single_line); - spin_unlock_irqrestore(&console_lock, flags); - } - - return 0; -#else - if ( !test_and_set_bit(DF_CONWRITEBUG, ¤t->flags) ) - { - printk("DOM%u is attempting to use the deprecated " - "HYPERVISOR_console_write() interface.\n", current->domain); - printk(" - For testing, create a debug build of Xen\n"); - printk(" - For production, your OS must use the new console model\n"); - } - return -ENOSYS; -#endif -} - void init_console(void) { extern unsigned char opt_console[]; diff --git a/xen/include/hypervisor-ifs/hypervisor-if.h b/xen/include/hypervisor-ifs/hypervisor-if.h index a8a59eca5b..ee507c7f3e 100644 --- a/xen/include/hypervisor-ifs/hypervisor-if.h +++ b/xen/include/hypervisor-ifs/hypervisor-if.h @@ -25,26 +25,25 @@ /* EAX = vector; EBX, ECX, EDX, ESI, EDI = args 1, 2, 3, 4, 5. */ #define __HYPERVISOR_set_trap_table 0 #define __HYPERVISOR_mmu_update 1 -#define __HYPERVISOR_console_write 2 /* DEPRECATED */ -#define __HYPERVISOR_set_gdt 3 -#define __HYPERVISOR_stack_switch 4 -#define __HYPERVISOR_set_callbacks 5 -#define __HYPERVISOR_fpu_taskswitch 7 -#define __HYPERVISOR_sched_op 8 -#define __HYPERVISOR_dom0_op 9 -#define __HYPERVISOR_set_debugreg 12 -#define __HYPERVISOR_get_debugreg 13 -#define __HYPERVISOR_update_descriptor 14 -#define __HYPERVISOR_set_fast_trap 15 -#define __HYPERVISOR_dom_mem_op 16 -#define __HYPERVISOR_multicall 17 -#define __HYPERVISOR_update_va_mapping 19 -#define __HYPERVISOR_set_timer_op 20 -#define __HYPERVISOR_event_channel_op 21 -#define __HYPERVISOR_xen_version 22 -#define __HYPERVISOR_console_io 23 -#define __HYPERVISOR_physdev_op 24 -#define __HYPERVISOR_update_va_mapping_otherdomain 25 +#define __HYPERVISOR_set_gdt 2 +#define __HYPERVISOR_stack_switch 3 +#define __HYPERVISOR_set_callbacks 4 +#define __HYPERVISOR_fpu_taskswitch 5 +#define __HYPERVISOR_sched_op 6 +#define __HYPERVISOR_dom0_op 7 +#define __HYPERVISOR_set_debugreg 8 +#define __HYPERVISOR_get_debugreg 9 +#define __HYPERVISOR_update_descriptor 10 +#define __HYPERVISOR_set_fast_trap 11 +#define __HYPERVISOR_dom_mem_op 12 +#define __HYPERVISOR_multicall 13 +#define __HYPERVISOR_update_va_mapping 14 +#define __HYPERVISOR_set_timer_op 15 +#define __HYPERVISOR_event_channel_op 16 +#define __HYPERVISOR_xen_version 17 +#define __HYPERVISOR_console_io 18 +#define __HYPERVISOR_physdev_op 19 +#define __HYPERVISOR_update_va_mapping_otherdomain 20 /* * MULTICALLS diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index 0bb64967d4..f40a16dd48 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -247,15 +247,14 @@ extern struct domain *task_list; #define DF_CONSTRUCTED 3 /* Has the guest OS been fully built yet? */ #define DF_IDLETASK 4 /* Is this one of the per-CPU idle domains? */ #define DF_PRIVILEGED 5 /* Is this domain privileged? */ -#define DF_CONWRITEBUG 6 /* Has this domain used the obsolete console? */ -#define DF_PHYSDEV 7 /* May this domain do IO to physical devices? */ -#define DF_BLOCKED 8 /* Domain is blocked waiting for an event. */ -#define DF_CTRLPAUSE 9 /* Domain is paused by controller software. */ -#define DF_SHUTDOWN 10 /* Guest shut itself down for some reason. */ -#define DF_CRASHED 11 /* Domain crashed inside Xen, cannot continue. */ -#define DF_DYING 12 /* Death rattle. */ -#define DF_RUNNING 13 /* Currently running on a CPU. */ -#define DF_CPUPINNED 14 /* Disables auto-migration. */ +#define DF_PHYSDEV 6 /* May this domain do IO to physical devices? */ +#define DF_BLOCKED 7 /* Domain is blocked waiting for an event. */ +#define DF_CTRLPAUSE 8 /* Domain is paused by controller software. */ +#define DF_SHUTDOWN 9 /* Guest shut itself down for some reason. */ +#define DF_CRASHED 10 /* Domain crashed inside Xen, cannot continue. */ +#define DF_DYING 11 /* Death rattle. */ +#define DF_RUNNING 12 /* Currently running on a CPU. */ +#define DF_CPUPINNED 13 /* Disables auto-migration. */ static inline int domain_runnable(struct domain *d) { -- 2.30.2